home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / morse / machine / machine.bas < prev    next >
BASIC Source File  |  1985-06-12  |  23KB  |  456 lines

  1. 10 CLS: REM      SOUND ON:BEEP OFF
  2. 20 COLOR 14,4,1
  3. 30 '
  4. 40 '=========================================================================
  5. 50 '= Notes for the users of this program   & PCjr Users                    =
  6. 60 '=========================================================================
  7. 70 '
  8. 80 '  If you are useing a PCjr with an external amplifier for sound you can
  9. 90 '  achieve very realistic sound without the clicks by removing the REM
  10. 100 ' in line number 10 so that it reads  10 CLS:SOUND ON:BEEP OFF
  11. 110 ' Jr used with a cheap amplifier such as one sold by Radio Shack for
  12. 120 ' about $7.00 will create a dramatic increase in the quality of sound
  13. 130 ' and the clicks heard on the PCjr speaker will be greatly reduced.
  14. 140 '
  15. 150 ' Please feel free to copy this program and distribute it among your
  16. 160 ' friends.  I wrote this program so that I could obtain my amateur
  17. 170 ' radio license.  I used it for 2 months and went from no license to
  18. 180 ' Advanced Class in that short period of time.  It worked for me and
  19. 190 ' I am sure it will work for you if you practice with it.  Good Luck.
  20. 200 ' Jim Radcliffe  N9DHZ
  21. 210 '
  22. 220 ' NOTE:  Downloading of this program  in straight TEXT or ASCII form
  23. 230 '        will result in the loss of the screen graphics of the title
  24. 240 '        page.  XMODEM protocol is advised.
  25. 250 '
  26. 260 '
  27. 270 KEY OFF : CLS : X = VAL(RIGHT$(TIME$,2)) : RANDOMIZE X
  28. 280 PRINT "                                    ┌─┐        ┌┬┬┬┬┬┬┬┬┐  "
  29. 290 PRINT "                     ┌░░┐   ╔══╗    └░┘        └▀▀▀██▀▀▀┘  "
  30. 300 PRINT "            ╔══╗  ▀▀▀▀▒▒▀▀▀▀║°°║▀▀▀▀▀█▀▀▀▀▀▀▀██▀▀▀▀▀▀      "
  31. 310 PRINT "            ╚╦╦╝      ║║    ║  ║    ╔▓╗      ╔╗            "
  32. 320 PRINT "           ╔═╩╩═══════╩╩════╩══╩════╩╩╩══════╩╩══╗     "
  33. 330 PRINT "           ╚═════════════════════════════════════╝     "
  34. 340 PRINT SPC(25)"╔════════════════════════════════╗"
  35. 350 PRINT SPC(25)"║     THE MEAN MORSE MACHINE     ║"
  36. 360 PRINT SPC(25)"║      Jim Radcliffe  N9DHZ      ║"
  37. 370 PRINT SPC(25)"║       Copyright (c) 1985       ║"
  38. 380 PRINT SPC(25)"╚════════════════════════════════╝"
  39. 390 PRINT
  40. 400 PRINT"  A ▄ ▄▄▄          K ▄▄▄ ▄ ▄▄▄      U ▄ ▄ ▄▄▄            5 ▄ ▄ ▄ ▄ ▄
  41. 410 PRINT"  B ▄▄▄ ▄ ▄ ▄      L ▄ ▄▄▄ ▄ ▄      V ▄ ▄ ▄ ▄▄▄          6 ▄▄▄ ▄ ▄ ▄ ▄
  42. 420 PRINT"  C ▄▄▄ ▄ ▄▄▄ ▄    M ▄▄▄ ▄▄▄        W ▄ ▄▄▄ ▄▄▄          7 ▄▄▄ ▄▄▄ ▄ ▄ ▄
  43. 430 PRINT"  D ▄▄▄ ▄ ▄        N ▄▄▄ ▄          X ▄▄▄ ▄ ▄ ▄▄▄        8 ▄▄▄ ▄▄▄ ▄▄▄ ▄ ▄
  44. 440 PRINT"  E ▄              O ▄▄▄ ▄▄▄ ▄▄▄    Y ▄▄▄ ▄ ▄▄▄ ▄▄▄      9 ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄
  45. 450 PRINT"  F ▄ ▄ ▄▄▄ ▄      P ▄ ▄▄▄ ▄▄▄ ▄    Z ▄▄▄ ▄▄▄ ▄ ▄        0 ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄
  46. 460 PRINT"  G ▄▄▄ ▄▄▄ ▄      Q ▄▄▄ ▄▄▄ ▄ ▄▄▄  1 ▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄  . ▄ ▄▄▄ ▄ ▄▄▄ ▄ ▄▄▄
  47. 470 PRINT"  H ▄ ▄ ▄ ▄        R ▄ ▄▄▄ ▄        2 ▄ ▄ ▄▄▄ ▄▄▄ ▄▄▄    , ▄▄▄ ▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄
  48. 480 PRINT"  I ▄ ▄            S ▄ ▄ ▄          3 ▄ ▄ ▄ ▄▄▄ ▄▄▄      ? ▄ ▄ ▄▄▄ ▄▄▄ ▄ ▄
  49. 490 PRINT"  J ▄ ▄▄▄ ▄▄▄ ▄▄▄  T ▄▄▄            4 ▄ ▄ ▄ ▄ ▄▄▄        / ▄▄▄ ▄ ▄ ▄▄▄ ▄
  50. 500 IF Z$ = "3" THEN LOCATE 23,1 : END
  51. 510 X$=INKEY$: IF X$="" THEN 510 ELSE CLS: LOCATE 3,28:PRINT"--- NOTICE OF COPYRIGHT ---":PRINT
  52. 520 PRINT"             *  The Mean Morse Machine Is User Supported Software *
  53. 530 PRINT
  54. 540 PRINT"             If you are using this program and finding it of value,
  55. 550 PRINT"             your contribution ($10 suggested) will be appreciated.
  56. 560 PRINT"
  57. 570 PRINT"                              James Lee Radcliffe
  58. 580 PRINT"                            C/O  Dr. Robert Meisner
  59. 590 PRINT"                                2019 Ivy Drive
  60. 600 PRINT"                              Manhattan, KS 66502
  61. 610 PRINT"
  62. 620 PRINT"              You are encouraged to copy  and  share this program with
  63. 630 PRINT"           other users, on the conditions that the program will not be
  64. 640 PRINT"           distributed in modified form,  that no fee or consideration
  65. 650 PRINT"           is charged, and that this notice is not bypassed or removed.
  66. 660 LOCATE 24,27 :PRINT "Press any key to continue...";
  67. 670 DIM AL$(50), MC$(50), TRX$(20), RCV$(20), RNA$(20), RST$(20)
  68. 680 DIM QTH$(20), TNA$(20), POW$(20), ANT$(20), HGHT$(20)
  69. 690 DIM REC$(20), NT$(20), AG$(20), LIC$(20), CL$(20), WX$(20)
  70. 700 DIM CND$(20), TEM$(20), OC$(20), QRT$(20), AP$(47), MP$(47), A(20)
  71. 710 FOR X = 1 TO 41 : READ AL$(X), MC$(X): NEXT X
  72. 720 FOR X = 1 TO 11 : READ TRX$(X) : NEXT X
  73. 730 FOR X = 1 TO 11 : READ RCV$(X) : NEXT X
  74. 740 FOR X = 1 TO 11 : READ RNA$(X) : NEXT X
  75. 750 FOR X = 1 TO 11 : READ RST$(X) : NEXT X
  76. 760 FOR X = 1 TO 11 : READ QTH$(X) : NEXT X
  77. 770 FOR X = 1 TO 11 : READ TNA$(X) : NEXT X
  78. 780 FOR X = 1 TO 11 : READ POW$(X) : NEXT X
  79. 790 FOR X = 1 TO 11 : READ ANT$(X) : NEXT X
  80. 800 FOR X = 1 TO 11 : READ HGHT$(X) : NEXT X
  81. 810 FOR X = 1 TO 11 : READ REC$(X) : NEXT X
  82. 820 FOR X = 1 TO 11 : READ NT$(X) : NEXT X
  83. 830 FOR X = 1 TO 11 : READ AG$(X) : NEXT X
  84. 840 FOR X = 1 TO 11 : READ LIC$(X) : NEXT X
  85. 850 FOR X = 1 TO 11 : READ CL$(X) : NEXT X
  86. 860 FOR X = 1 TO 11 : READ WX$(X) : NEXT X
  87. 870 FOR X = 1 TO 11 : READ CND$(X) : NEXT X
  88. 880 FOR X = 1 TO 11 : READ TEM$(X) : NEXT X
  89. 890 FOR X = 1 TO 11 : READ OC$(X) : NEXT X
  90. 900 FOR X = 1 TO 11 : READ QRT$(X) : NEXT X
  91. 910 A$=INKEY$ : IF A$ <> "" THEN 920 ELSE 910
  92. 920 CLS
  93. 930 '
  94. 940 '
  95. 950 'Program introduction
  96. 960 '
  97. 970 '
  98. 980 '
  99. 990 LOCATE 1,31 : PRINT"A Note From N9DHZ" : PRINT
  100. 1000 PRINT"         This program is in two  parts, the first is the  Morse Trainer."
  101. 1010 PRINT"       The morse trainer is designed to help you learn the International"
  102. 1020 PRINT"       Morse Code.   It will give you the opportunity to become familiar"
  103. 1030 PRINT"       with all of the  letters of the alphabet, numbers and punctuation"
  104. 1040 PRINT"       that you must know to acquire an amateur radio license.  You will"
  105. 1050 PRINT"       be receiving training  groups of a maximum of six characters at a"
  106. 1060 PRINT"       time.  With a little effort on your  part you will know the Morse"
  107. 1070 PRINT"       Code in no time at all."
  108. 1080 PRINT
  109. 1090 PRINT"         The second part of the program is the Upgrade Trainer.  This is"
  110. 1100 PRINT"       a terrific way to practice  for that next license class.  It will"
  111. 1110 PRINT"       allow  you to receive continuous or five character code groupings"
  112. 1120 PRINT"       as well  as randomly  generated QSO's at speeds from 5 to 55 wpm."
  113. 1130 PRINT"       The FCC code examination is based on this type  of exercise.  You"
  114. 1140 PRINT"       will find this to be a valuable tool in acquiring your license."
  115. 1150 PRINT"       The format is  identical to the one that the FCC used in testing."
  116. 1160 PRINT
  117. 1170 PRINT"         This program will not guarantee that you will pass the FCC exam."
  118. 1180 PRINT"       Only you can learn the Morse Code! However, with determination on"
  119. 1190 PRINT"       your part and this program, you will learn the Morse Code quickly"
  120. 1200 PRINT"       and easily.  See you on the air!"
  121. 1210 LOCATE 25,27: PRINT"Press any key to continue...";: X$ = INKEY$
  122. 1220 IF X$ = "" THEN GOTO 1210
  123. 1230 '
  124. 1240 '
  125. 1250 '
  126. 1260 ' Main Menu
  127. 1270 '
  128. 1280 '
  129. 1290 '
  130. 1300 CLS :COLOR 14,4:KEY OFF : LOCATE 8,1:A=FRE(" ")
  131. 1310 FOR X = 1 TO 9: KEY (X) OFF  :  NEXT X
  132. 1320 PRINT SPC(28)"THE MEAN MORSE MACHINE" : PRINT
  133. 1330 PRINT SPC(30)"(1) MORSE TRAINER" : PRINT
  134. 1340 PRINT SPC(30)"(2) UPGRADE TRAINER" : PRINT
  135. 1350 PRINT SPC(30)"(3) EXIT PROGRAM" : PRINT
  136. 1360 PRINT
  137. 1370 LOCATE 16,28 : PRINT "PLEASE ENTER YOUR CHOICE";:Z$= INKEY$
  138. 1380 IF Z$ = "1" THEN GOTO 1510
  139. 1390 IF Z$ = "2" THEN GOTO 1890
  140. 1400 IF Z$ = "3" THEN GOTO 270
  141. 1410 Z$ = "": GOTO 1370
  142. 1420 '
  143. 1430 KEY ON
  144. 1440 '
  145. 1450 '
  146. 1460 '
  147. 1470 ' Morse Trainer
  148. 1480 '
  149. 1490 '
  150. 1500 '
  151. 1510 PLAY"MF T105 MS L15;O3"
  152. 1520 CLS : X = VAL(RIGHT$(TIME$,2)) : RANDOMIZE X
  153. 1530 KEY 1," ABCDE":KEY 2," FGHIJ": KEY 3," KLMNO": KEY 4," PQRST"
  154. 1540 KEY 5,"UVWXYZ": KEY 6," 12345": KEY 7," 67890": KEY 8," .,/:?"
  155. 1550 KEY 9," STOP ": KEY 10," MENU ": FOR X = 1 TO 10 : KEY (X) ON : NEXT X
  156. 1560 KEY ON
  157. 1570 ON KEY (1) GOSUB 1720
  158. 1580 ON KEY (2) GOSUB 1730
  159. 1590 ON KEY (3) GOSUB 1740
  160. 1600 ON KEY (4) GOSUB 1750
  161. 1610 ON KEY (5) GOSUB 1760
  162. 1620 ON KEY (6) GOSUB 1770
  163. 1630 ON KEY (7) GOSUB 1780
  164. 1640 ON KEY (8) GOSUB 1790
  165. 1650 ON KEY (9) GOSUB 1800
  166. 1660 ON KEY (10) GOSUB 1810
  167. 1670 LOCATE 1,1 : PRINT"    MEAN MORSE MACHINE -- MORSE CODE TRAINER -- PRESS FUNCTION KEY 1 THRU 8     "
  168. 1680 LOCATE 3,1 : PRINT"      Press the fuction key representing the group you wish to practice."
  169. 1690 GOTO 1690
  170. 1700 X = INT(RND * (RC + 1)) + 1 + GN : PLAY MC$(X): PLAY "P1": PRINT AL$(X);" ";:IF POS(0) > 75 THEN PRINT:PRINT SPC(8);
  171. 1710 GOTO 1700
  172. 1720 RC = 4 : GN = 0 : PRINT : PRINT"GROUP 1 ";: PLAY "P1.." : RETURN 1700
  173. 1730 RC = 4 : GN = 5 : PRINT : PRINT"GROUP 2 ";: PLAY "P1.." : RETURN 1700
  174. 1740 RC = 4 : GN = 10 : PRINT : PRINT"GROUP 3 ";: PLAY "P1.." : RETURN 1700
  175. 1750 RC = 4 : GN = 15 : PRINT : PRINT"GROUP 4 ";: PLAY "P1.." : RETURN 1700
  176. 1760 RC = 5 : GN = 20 : PRINT : PRINT"GROUP 5 ";: PLAY "P1.." : RETURN 1700
  177. 1770 RC = 4 : GN = 26 : PRINT : PRINT"GROUP 6 ";: PLAY "P1.." : RETURN 1700
  178. 1780 RC = 4 : GN = 31 : PRINT : PRINT"GROUP 7 ";: PLAY "P1.." : RETURN 1700
  179. 1790 RC = 4 : GN = 36 : PRINT : PRINT"GROUP 8 ";: PLAY "P1.." : RETURN 1700
  180. 1800 RETURN 1690
  181. 1810 F = 0 :RETURN 1300
  182. 1820 '
  183. 1830 '
  184. 1840 '
  185. 1850 ' Upgrade Trainer
  186. 1860 '
  187. 1870 '
  188. 1880 '
  189. 1890 RP = 1 : CLS : ID$ = "      THE MEAN MORSE MACHINE -- UPGRADE TRAINER -- VARIABLE SPEED & SPACING     " : PRINT ID$
  190. 1900 FOR X = 1 TO 9 : KEY (X) OFF : KEY X," OFF " : NEXT X : KEY ON
  191. 1910 ON KEY (10) GOSUB 1810 : KEY 10," MENU " : KEY (10) ON
  192. 1920 T$ = "4" : LOCATE 5,1
  193. 1930 INPUT"      ENTER THE CODE SPEED: (5 WPM TO 55 WPM) ",CS$
  194. 1940 IF VAL(CS$) < 5 OR VAL(CS$) > 55 THEN SOUND 1000,10: LOCATE 5,1 : GOTO 1930
  195. 1950 CS = VAL(CS$) : P = CS : P$ = "P" + STR$(CS) : WP = ( INT(CS/2)) + 2 : WP$ = "P" + STR$(WP)
  196. 1960 CS$ = "L" + CS$ : GOTO 1980
  197. 1970 LOCATE 3,1 : GOTO 1930
  198. 1980 PRINT
  199. 1990 PRINT
  200. 2000 PRINT "      YOU MAY RECEIVE:   (A) LETTERS ONLY":PRINT
  201. 2010 PRINT SPC(25) "(B) LETTERS AND NUMBERS" : PRINT
  202. 2020 PRINT SPC(25) "(C) LETTERS, NUMBERS AND PUNCTUATION" : PRINT
  203. 2030 PRINT SPC(25) "(D) PROBLEM CHARACTERS" : PRINT
  204. 2040 PRINT SPC(25) "(E) PRACTICE QSO" : PRINT
  205. 2050 PRINT SPC(25) "ENTER YOUR CHOICE ";: INPUT" ",RC$
  206. 2060 IF LEFT$(RC$,1) = "A" OR LEFT$(RC$,1) = "a" THEN RC = 26:GOTO 2120
  207. 2070 IF LEFT$(RC$,1) = "B" OR LEFT$(RC$,1) = "b" THEN RC = 36:GOTO 2120
  208. 2080 IF LEFT$(RC$,1) = "C" OR LEFT$(RC$,1) = "c" THEN RC = 41:GOTO 2120
  209. 2090 IF LEFT$(RC$,1) = "D" OR LEFT$(RC$,1) = "d" THEN FL = 1 :GOTO 2120
  210. 2100 IF LEFT$(RC$,1) = "E" OR LEFT$(RC$,1) = "e" THEN GOTO 2140
  211. 2110 BEEP:LOCATE 18,1:GOTO 2050
  212. 2120 PRINT
  213. 2130 INPUT"      RECEIVE CONTINUOUS CHARACTERS OR FIVE CHARACTER GROUPS? (C/F) ",M$ : PRINT
  214. 2140 CE$ = "MF T105 MS" + CS$ +";O"+ T$ : PLAY CE$ : GOTO 3310
  215. 2150 CLS : PRINT ID$ : C = 0
  216. 2160 IF LEFT$(RC$,1) = "E" OR LEFT$(RC$,1) = "e" THEN GOTO 2870
  217. 2170 IF FL = 1 THEN GOTO 2510
  218. 2180 LOCATE 1,51 : PRINT CS;"WORDS PER MINUTE      " : LOCATE 5,1:PRINT SPC(5);
  219. 2190 FOR X = 1 TO 2000:NEXT
  220. 2200 RC = RC -1 : TIME$ = "00:00:00"
  221. 2210 X= INT(RND*(RC+1))+1: PLAY MC$(X) + P$
  222. 2220 IF POS(0)> 77 THEN PRINT:PRINT:PRINT SPC(5);
  223. 2230 IF CSRLIN > 20 THEN 2450
  224. 2240 IF M$ = "C" THEN PRINT AL$(X);" ";: GOTO 2210
  225. 2250 C = C + 1 : IF C = 5 THEN PRINT AL$(X);" ";: PLAY WP$ :  ELSE PRINT AL$(X);:IF C > 5 THEN C = 1
  226. 2260 GOTO 2210
  227. 2270 RETURN 2350
  228. 2280 RETURN 2210
  229. 2290 P$ = RIGHT$(P$,(LEN(P$))-1) : P = VAL(P$) : IF P > 5 THEN P = P - 1: P$ = "P" + STR$(P) : GOTO 2390
  230. 2300 P$ = "P5" : GOTO 2390
  231. 2310 P$ = RIGHT$(P$,(LEN(P$))-1) : P = VAL(P$) : IF P < CS THEN P = P + 1 : P$ = "P" + STR$(P) : GOTO 2390
  232. 2320 P$ = "P" + STR$(CS) : GOTO 2390
  233. 2330 P$ = "P55" : GOTO 2390
  234. 2340 FOR X = 1 TO 9 : KEY (X) OFF : NEXT : FL = 0 : RETURN 1890
  235. 2350 GOTO 2350
  236. 2360 T = VAL(T$): IF T<6 THEN T = T + 1 : T$ = STR$(T)
  237. 2370 GOTO 2390
  238. 2380 T = VAL(T$): IF T>1 THEN T = T - 1 : T$ = STR$(T)
  239. 2390 CE$ = "MF T105 MS" + CS$ +";O"+T$ : PLAY CE$
  240. 2400 IF CS <> P THEN COLOR 10,4
  241. 2410 IF CS = P THEN COLOR 14,4
  242. 2420 IF RP = 1 THEN RETURN 2210
  243. 2430 IF RP = 2 THEN RETURN 2730
  244. 2440 IF RP = 3 THEN RETURN 3020
  245. 2450 LOCATE 22,11:PRINT"CHECK YOUR COPY FOR ACCURACY - PRESS RETURN FOR THE MENU"
  246. 2460 A$=INKEY$:IF A$=CHR$(13) THEN 1260 ELSE 2460
  247. 2470 '
  248. 2480 ' Problem Character Routine
  249. 2490 '
  250. 2500 '
  251. 2510 A$="":AA$="":RP = 2 :EC = 0:PRINT: PRINT "       ENTER PROBLEM CHARACTERS (DO NOT INCLUDE SPACES) ";
  252. 2520 AA$=INKEY$:IF AA$=CHR$(13) THEN CLS:GOTO 2570
  253. 2530 IF AA$="" THEN 2520
  254. 2540 IF AA$=CHR$(8) THEN A$=LEFT$(A$,LEN(A$)-1):PRINT CHR$(29);:PRINT " "+CHR$(29);:GOTO 2520
  255. 2550 A$=A$+AA$:PRINT AA$;:GOTO 2520
  256. 2560 ON KEY (8) GOSUB 2780
  257. 2570 L = LEN(A$)
  258. 2580 FOR X = 1 TO L:IF ASC(MID$(A$,X,1)) > 94 THEN LF=1
  259. 2590 NEXT
  260. 2600 IF LF=1 THEN LF=0:BEEP:PRINT"   Enter the problem characters in UPPER CASE only without spaces!":FOR X =1 TO 1000:NEXT:CLS:GOTO 2480
  261. 2610 FOR X = 1 TO 41
  262. 2620 FOR Y = 1 TO L
  263. 2630 IF AL$(X) = MID$(A$,Y,1) THEN EC = EC +1
  264. 2640 NEXT Y,X
  265. 2650 IF EC <> L THEN PRINT :BEEP: PRINT"   YOU ENTERED ";:PRINT A$:PRINT:PRINT"   ONE OR MORE OF THE ABOVE CHARACTERS IS INVALID AS A MORSE CHARACTER.":PRINT:EC = 0 : A$="":AA$="":GOTO 2510
  266. 2660 FOR X = 1 TO 41
  267. 2670 FOR Y = 1 TO L
  268. 2680 IF AL$(X) = MID$(A$,Y,1) THEN MP$(Y) = MC$(X) : AP$(Y) = AL$(X)
  269. 2690 NEXT Y,X
  270. 2700 CLS : PRINT ID$ : LOCATE 3,6 : PRINT"  PROBLEM CHARACTERS: ";A$;"     CODE SPEED ";CS;"WPM " : PRINT:PRINT SPC(7);
  271. 2710 FOR X = 1 TO 2000:NEXT
  272. 2720 RC = L-1
  273. 2730 X = INT(RND * (RC+1))+1: PLAY MP$(X) + P$
  274. 2740 IF POS(0)> 73 THEN PRINT:PRINT:PRINT SPC(7);:IF CSRLIN=23 THEN 2790
  275. 2750 IF M$ = "C" THEN PRINT AP$(X);" ";: GOTO 2730
  276. 2760 C = C + 1 : IF C = 5 THEN PRINT AP$(X);" ";: PLAY WP$ : ELSE PRINT AP$(X);:IF C > 5 THEN C = 1
  277. 2770 GOTO 2730
  278. 2780 RETURN 2730
  279. 2790 PRINT"CHECK YOUR COPY FOR ACCURACY - PRESS THE RETURN KEY FOR THE MENU"
  280. 2800 A$=INKEY$:IF A$=CHR$(13) THEN 1260 ELSE 2800
  281. 2810 '
  282. 2820 '
  283. 2830 ' Random QSO generator
  284. 2840 '
  285. 2850 '
  286. 2860 '
  287. 2870 RP = 3
  288. 2880 X = INT(RND *(10 + 1)) + 1 : N = 0
  289. 2890 QSO$(0) = "CQ CQ CQ CQ VVV VVV VVV      "
  290. 2900 QSO$(1) = TRX$(X) + " DE " + RCV$(X) + " RRR "
  291. 2910 QSO$(2) = "AND TNX " + RNA$(X) + ", UR RST " + RST$(X) + ", QTH HR IS " + QTH$(X) + ", AND NAME IS " + TNA$(X) + ". "
  292. 2920 QSO$(3) = "MY RIG RUNS " + POW$(X) + " WATTS INTO A " + ANT$(X) + " UP " + HGHT$(X) + " FEET. "
  293. 2930 QSO$(4) = "MY RECEIVER IS " + REC$(X) + " WITH " + NT$(X) + " TUBES. MY AGE IS " + AG$(X)
  294. 2940 QSO$(5) = " AND LICENSED " + LIC$(X) + " YEARS AS " + CL$(X) + " CLASS. "
  295. 2950 QSO$(6) = "THE WEATHER HERE IS " + WX$(X) + " AND " + CND$(X) + " AND TEMPERATURE IS " + TEM$(X) + ". "
  296. 2960 QSO$(7) = "MY OCCUPATION IS " + OC$(X) + ". I MUST QRT SOON FOR " + QRT$(X) + ". HOW COPY? "
  297. 2970 QSO$(8) = TRX$(X) + " DE " + RCV$(X) + " AR"
  298. 2980 LOCATE 1,32 : PRINT" PRACTICE QSO -- ";CS;" WORDS PER MINUTE        "
  299. 2990 LOCATE 5,1
  300. 3000 FOR X = 1 TO 5 : KEY (X) ON : NEXT X
  301. 3010 FOR Y = 1 TO LEN(QSO$(N)):IF POS(0)=1 THEN PRINT SPC(13);
  302. 3020 S = ASC(MID$(QSO$(N),Y,1))
  303. 3030 IF S > 64 AND S < 91 THEN S = S - 64 : PLAY MC$(S) + P$ : PRINT AL$(S);
  304. 3040 IF S = 32 THEN PLAY WP$ : PRINT " ";: IF POS(0) > 55 THEN PRINT:PRINT SPC(13);
  305. 3050 IF S = 48 THEN PLAY MC$(36) + P$ : PRINT AL$(36);
  306. 3060 IF S = 49 THEN PLAY MC$(27) + P$ : PRINT AL$(27);
  307. 3070 IF S = 50 THEN PLAY MC$(28) + P$ : PRINT AL$(28);
  308. 3080 IF S = 51 THEN PLAY MC$(29) + P$ : PRINT AL$(29);
  309. 3090 IF S = 52 THEN PLAY MC$(30) + P$ : PRINT AL$(30);
  310. 3100 IF S = 53 THEN PLAY MC$(31) + P$ : PRINT AL$(31);
  311. 3110 IF S = 54 THEN PLAY MC$(32) + P$ : PRINT AL$(32);
  312. 3120 IF S = 55 THEN PLAY MC$(33) + P$ : PRINT AL$(33);
  313. 3130 IF S = 56 THEN PLAY MC$(34) + P$ : PRINT AL$(34);
  314. 3140 IF S = 57 THEN PLAY MC$(35) + P$ : PRINT AL$(35);
  315. 3150 IF S = 46 THEN PLAY MC$(37) + P$ : PRINT AL$(37);
  316. 3160 IF S = 44 THEN PLAY MC$(38) + P$ : PRINT AL$(38);
  317. 3170 IF S = 47 THEN PLAY MC$(39) + P$ : PRINT AL$(39);
  318. 3180 IF S = 63 THEN PLAY MC$(40) + P$ : PRINT AL$(40);
  319. 3190 NEXT Y
  320. 3200 IF N = 0 THEN PRINT : PRINT
  321. 3210 IF N = 1 THEN PRINT : PRINT
  322. 3220 IF N = 7 THEN PRINT : PRINT
  323. 3230 IF N = 8 THEN GOTO 3240 ELSE N = N + 1 : GOTO 3010
  324. 3240 LOCATE 22,1 : PRINT"     CHECK YOUR COPY FOR ACCURACY  -  PRESS FUNCTION KEY 6 FOR ANOTHER QSO     " :KEY (6) ON : KEY 6," AGAIN"
  325. 3250 ON KEY (6) GOSUB 3280
  326. 3260 FOR X = 1 TO 5 : KEY (X) OFF : NEXT X
  327. 3270 GOTO 3270
  328. 3280 CLS : PRINT ID$ : KEY (6) OFF : KEY 6," OFF " : GOTO 2880
  329. 3290 END
  330. 3300 '
  331. 3310 ON KEY (1) GOSUB 2360 : KEY 1," TONE" + CHR$(24) : KEY (1) ON
  332. 3320 ON KEY (2) GOSUB 2380 : KEY 2," TONE" + CHR$(25) : KEY (2) ON
  333. 3330 ON KEY (3) GOSUB 2290 : KEY 3,"SPACE" + CHR$(24) : KEY (3) ON
  334. 3340 ON KEY (4) GOSUB 2310 : KEY 4,"SPACE" + CHR$(25) : KEY (4) ON
  335. 3350 ON KEY (5) GOSUB 4090 : KEY 5," HELP " : KEY (5) ON
  336. 3360 ON KEY (7) GOSUB 2340 : KEY 7," RESET": KEY (7) ON
  337. 3370 ON KEY (8) GOSUB 2390 : KEY 8," CONT.": KEY (8) ON
  338. 3380 ON KEY (9) GOSUB 2270: KEY 9," PAUSE": KEY (9) ON
  339. 3390 KEY ON : GOTO 2150
  340. 3400 '
  341. 3410 '
  342. 3420 'Letters of the alphabet
  343. 3430 '
  344. 3440 '
  345. 3450 DATA A,CC..,B,C..CCC,C,C..CC..C,D,C..CC,E,C,F,CCC..C
  346. 3460 DATA G,C..C..C,H,CCCC,I,CC,J,CC..C..C..,K,C..CC..
  347. 3470 DATA L,CC..CC,M,C..C..,N,C..C,O,C..C..C..,P,CC..C..C
  348. 3480 DATA Q,C..C..CC..,R,CC..C,S,CCC,T,C..,U,CCC..,V,CCCC..
  349. 3490 DATA W,CC..C..,X,C..CCC..,Y,C..CC..C..,Z,C..C..CC
  350. 3500 '
  351. 3510 'Numbers
  352. 3520 '
  353. 3530 DATA 1,CC..C..C..C..,2,CCC..C..C..,3,CCCC..C..,4,CCCCC..
  354. 3540 DATA 5,CCCCC,6,C..CCCC,7,C..C..CCC,8,C..C..C..CC
  355. 3550 DATA 9,C..C..C..C..C,0,C..C..C..C..C..
  356. 3560 '
  357. 3570 'Punctuation
  358. 3580 '
  359. 3590 DATA ".",CC..CC..CC..,",",C..C..CCC..C..,"/",C..CCC..C,"?",CCC..C..CC
  360. 3600 DATA ":",C..C..C..CCC
  361. 3610 '
  362. 3620 PRINT ERR: END
  363. 3630 'QSO DATA
  364. 3640 '
  365. 3650 'TRANSMITOR-TRX$
  366. 3660 DATA WA4TBA,N9THI,WA0EBW,K3SNB,WB4POW,JA1XQE,WA0BNB,W6KW,WB4JOS,KP4SBW,W3PA 
  367. 3670 'RECEIVING PARTY-RCV$
  368. 3680 DATA WB0ACE,W3BRU,WB4LKJ,KL7IPV,WB6MXY/3,KH6LK,W4MAR,W1QCH,W3OPN,K7MET,W4XE 
  369. 3690 'RECEIVING PARTYS'NAME-RNA$
  370. 3700 DATA TOM,MARK,ROBERT,MARY,KENN,HASI,MICK,BOB,HARV,MARK,BART
  371. 3710 'RST REPORT-RST$
  372. 3720 DATA 569,468,569,569,559,579,599,589,599,559,598
  373. 3730 'QTH-QTH$
  374. 3740 DATA "CHICAGO, IL","RICHMOND, VA","RALEIGH, NC","FIJI ISLANDS"
  375. 3750 DATA "WASHINGTON, DC","SACRAMENTO, CA","ORLANDO, FLA","KANSAS CITY, MO"
  376. 3760 DATA "CLARK, MD","PHOENIX, AZ","DALLAS, TEXAS"
  377. 3770 'SENDERS NAME-TNA$
  378. 3780 DATA DAVID,PHIL,EARL,GEORGE,GARY,KATASHI,ALLEN,STEW,GAIL,DON,JAMES
  379. 3790 'POWER-POW$
  380. 3800 DATA 250,750,100,450,180,500,75,100,3,1000,1000
  381. 3810 'ANTENNA-ANT$
  382. 3820 DATA VERTICAL,GROUND PLANE,INVERTED VEE,TRAP DOUBLET,DIPOLE,2 ELE YAGI
  383. 3830 DATA QUAD,5 ELE BEAM,DIPOLE,RHOMBIC,CUBICAL QUAD
  384. 3840 'ANTENNA HEIGHT-HGHT$
  385. 3850 DATA 30,21,50,25,20,100,150,100,5,100,75
  386. 3860 'RECEIVER-REC$
  387. 3870 DATA R4,SB202,HQ100,SB301,DRAKE 2C,75S3,R100,DRAKE 2B,HQ101,75A4,75A4
  388. 3880 'TUBES-NT$
  389. 3890 DATA 11,10,21,11,3,16,8,8,17,14,17
  390. 3900 'AGE-AG$
  391. 3910 DATA 30,41,26,18,25,45,48,19,35,31,60
  392. 3920 'HOW LONG LICENSED-LIC$
  393. 3930 DATA 10,8,3,5,4,15,13,2,17,12,20
  394. 3940 'LICENSED AS-CL$
  395. 3950 DATA NOVICE,EXTRA,GENERAL,EXTRA,GENERAL,TECHNICIAN
  396. 3960 DATA ADVANCED,GENERAL,ADVANCED,EXTRA,GENERAL
  397. 3970 'WEATHER-WX$
  398. 3980 DATA COOL,HUMID,CLEAR,COLD,RAINY,MILD,RAINY,FOGGY,WINDY,HOT,SNOW
  399. 3990 'WEATHER CONDITIONS-CND$
  400. 4000 DATA WINDY,CALM,HOT,RAINY,WARM,BREEZY,WINDY,MILD,WET,DRY,COLD
  401. 4010 'TEMPERATURE-TEM$
  402. 4020 DATA MINUS 2,69,89,32,85,77,80,58,87,105,21
  403. 4030 'OCCUPATION-OC$
  404. 4040 DATA DOCTOR,ENGINEER,TRUCK DRIVER,STUDENT,POLICEMAN,PROFFESOR
  405. 4050 DATA DISC JOCKEY,ORDERLY,MUSICIAN,PHYSICIAN,ELECTRICIAN
  406. 4060 'REASON QRT-QRT$
  407. 4070 DATA LUNCH,BREAKFAST,WORK,SCHOOL,BED,STORE,WORK,DINNER,BOWLING
  408. 4080 DATA GOLF,CHOW
  409. 4090 CLS :FOR X = 1 TO 9 : KEY (X) OFF : NEXT X : PRINT SPC(25) "EXPLANATION OF FUNCTION KEYS"
  410. 4100 '
  411. 4110 '
  412. 4120 '
  413. 4130 '  Explanation of function keys
  414. 4140 '
  415. 4150 '
  416. 4160 PRINT
  417. 4170 PRINT"     Function Key 1....Press this key to raise the pitch of the code."
  418. 4180 PRINT"                       You may press it until it reaches its upper"
  419. 4190 PRINT"                       limit.  There are six tones available."
  420. 4200 PRINT
  421. 4210 PRINT"     Function Key 2....Press this key to lower the pitch of the code."
  422. 4220 PRINT
  423. 4230 PRINT"     Function Key 3....Press this key to increase the space between the"
  424. 4240 PRINT"                       individual characters.  You may use this function"
  425. 4250 PRINT"                       to utilize the Fast Code Method of learning the"
  426. 4260 PRINT"                       Morse Code.  The greater the number of times you"
  427. 4270 PRINT"                       press this key the greater the spacing between "
  428. 4280 PRINT"                       the morse characters, reducing the effective  "
  429. 4290 PRINT"                       speed at which you are receiving code.  When"
  430. 4300 PRINT"                       utilizing this feature the characters displayed"
  431. 4310 PRINT"                       on the CRT will be light green in color."
  432. 4320 PRINT
  433. 4330 PRINT"     Function Key 4....This key when pressed the same number of times as"
  434. 4340 PRINT"                       function key 3 will remove the extra spacing and"
  435. 4350 PRINT"                       restore normal code spacing.
  436. 4360 LOCATE 23,27:PRINT "Press any key to continue...";: X$ = INKEY$ : IF X$ = "" THEN GOTO 4360
  437. 4370 CLS :PRINT SPC(25)"EXPLANATION OF FUNCTION KEYS":PRINT:PRINT
  438. 4380 PRINT"     Function Key 5....Prints these explanations."
  439. 4390 PRINT
  440. 4400 PRINT"     Function Key 6....Pressing this key while in the Random QSO mode "
  441. 4410 PRINT"                       starts another practice QSO."
  442. 4420 PRINT
  443. 4430 PRINT"     Function Key 7....Pressing this key allows you to reconfigure your"
  444. 4440 PRINT"                       practice session while in the Upgrade Trainer."
  445. 4450 PRINT
  446. 4460 PRINT"     Function Key 8....Pressing this key restarts code transmission if"
  447. 4470 PRINT"                       you have pressed Function Key 9."
  448. 4480 PRINT
  449. 4490 PRINT"     Function Key 9....Pressing this key stops the transmission of code."
  450. 4500 PRINT
  451. 4510 PRINT"     Function Key 10...Pressing this key clears the screen and returns"
  452. 4520 PRINT"                       to the Main Menu."
  453. 4530 LOCATE 23,27:PRINT"Press any key to continue...";: X$ = INKEY$ : IF X$ = "" THEN GOTO 4530
  454. 4540 CLS
  455. 4550 RETURN 1300
  456.